iT邦幫忙

1

用Python寫個找質數的應用程式

  • 分享至 

  • xImage
  •  

實在是太常看到初學Python的同學在問找質數的問題了,而且每次看到程式碼都是從2到n-1找因數,看得眼睛都突出來了。
趁著週末錄了個影片,送給新手上路的同學,其中包括:

  1. 基本的開根號找因數法。
  2. 找質數其實只要檢查質因數,不用檢查所有因數,因此最簡單的可以跳過偶數,進階一點的可以找6n-1和6n+1(跳過2和3的倍數)。
  3. 介紹了費馬小定理與米勒拉賓檢驗法。不用這種方法是沒辦法找到那些超過八位數的質數的。

Yes


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Oo_花之舞__oO
iT邦新手 1 級 ‧ 2023-01-16 21:02:39

好文先推!

一跟二國中有學過
所以還好 我寫都會納入
謝謝分享新的酷方法 知道怎麼快速判斷大數是否是質數了

如果今天題目要寫的程式是
列出1~100的質數 也可以用這招嗎
應該就是要先列出2 然後排除偶數 再來用這套檢驗的方法(?
這樣效率也會更快嗎~

小哈片刻 iT邦研究生 4 級 ‧ 2023-01-16 23:38:13 檢舉

如果題目是要列1到n的質數的話,又有不一樣的思路可以走,可以參考埃拉托斯特尼篩法
這方法大致的步驟是這樣:

  1. 把數字2到n一字排開放到一個待查陣列
  2. 然後開一個空陣列放質數的列表
  3. 從待查陣列拿出最小的數字,這數字一定是質數,放到質數列表裏
  4. 把剛剛找到的質數的倍數都從待查陣列裏刪掉
  5. 重覆3和4

Miller-Rabin主要是應用在超大的數字範圍,比如八位數以上的數字~

學習了

難怪...我就覺得策略有點不一樣!謝謝大師說明
這方法課本有教~又複習了一次 並且可以應用在程式 很開心~謝謝

我要留言

立即登入留言